In general, integrated systems have shortcomings in both maintainability and scalability due to the complexity of embedded software and hardware. If a hardware component stops being produced, it becomes difficult to find a replacement with the same functionality and interface. Software interfacing is another issue. For example, if one component is changed, typically the entire system must be reprogrammed, largely from scratch.
This can be seen in daily consumer electronics. Companies often design their products to operate over relatively short periods. Entire devices are often discarded after a single component becomes obsolete as it is often more feasible to upgrade to a newer version of the device. For example, smart phones have an average lifespan of about 1.5 years, with a new and upgraded version of such device launching each year. Modifications of a single component, such as for replacement or to add new functionality, typically result in a redesign of the entire device.
Although this approach may work for some applications, there are often high costs associated with upgrading an entire device. For example, such costs may be associated with the maintenance and regular debugging that complex software requires. Additionally, an upgrade of a single component of a conventional device requires a major redesign of the entire device, with both significant hardware and software changes being necessary to ensure the device functions properly with the new component. This is because most conventional devices are designed using an integrated approach, where each component is specifically designed and/or selected to operate within the particular design. While this may create an efficient device, the maintenance and replacement of individual components may be very costly. For example, a single change may result in altering the core functionality of the entire system. Avoidance of this may be extremely costly in terms of money and labor.